今天宠物迷的小编给各位宠物饲养爱好者分享java设置下载响应头的宠物知识,其中也会对为什么java需要Http响应头等信息进行专业的解释,如果能碰巧解决你现在面临的宠物相关问题,别忘了关注本站哦,现在我们开始吧!
因为现在很多JAVA应用是B/S架构,而B/S架构使用的是标准的http协议,该协议是传递信息的渠道,比较安全,几乎所有互联网所遵守的协议,故http在java中还是挺重要的。
通过文件路径下载,不能用方式, 无论是通过js的window.location.href='';还是到后台通过流方式输出,都被IE阻止; 问题补充:anyasir 写道超链接可以下载的啊。。不知道你具体的情况怎么样。。不好说。。。如果用超链接怎么触发呢?我是先上传一个excel文件,然后处理保存,再跳到更新页面同时发出提示信息,接着把excel文件导出给用户,这些都是要一次过执行,客户只有上传excel文件一个操作,接下来就是由程序操作,直到excel导出完 问题补充:anyasir 写道response.setContentType("application/octet-stream;"); 这样来设置试试暂时不清楚这个设置是否可行,我对其他类型设置了几个都没成功,全部被拦截了 问题补充:anyasir 写道file是你上传的那个文件。。。你先拿到这个文件,然后用输出流写出来我也用流写过出来,可是都被拦截了
可以使用JoptionPane: 有几种提示框: 第一种: JOptionPane.showMessageDialog(jPanel, "提示消息", "标题",JOptionPane.WARNING_MESSAGE); 第二种: int n = JOptionPane.showConfirmDialog(null, "你高兴吗?", "标题",JOptionPane.YES_NO_OPTION);//返回的是按钮的index i=0或者1 第三种: Object[] obj2 ={ "**", "篮球", "乒乓球" }; String s = (String) JOptionPane.showInputDialog(null,"请选择你的爱好:\n", "爱好", JOptionPane.PLAIN_MESSAGE, new ImageIcon("icon.png"), obj2, "**");
java有样东西叫多线程
首先,我们先看一下http的头信息到底是什么:
HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而 言,包括message-header和message-body两部分。首先传递message- header,即http header消息。http header 消息通常被分为4个部分: general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确,根据日常使用,大体分为Request和Response两部分。
在通常的servlet/jsp应用中,我们只是从http的header中取得信息,如果要设置信息,需要用到HttpClient,具体的设置方法如下:
HttpResponse response = null;
HttpGet get = new HttpGet(url);
get.addHeader("Accept", "text/html");
get.addHeader("Accept-Charset", "utf-8");
get.addHeader("Accept-Encoding", "gzip");
get.addHeader("Accept-Language", "en-US,en");
get.addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22");
response = client****cute(get);
HttpEntity entity = response.getEntity();
Header header = entity.getContentEncoding();
if (header != null)
{
HeaderElement[] codecs = header.getElements();
for (int i = 0; i < codecs.length; i++)
{
if (codecs[i].getName().equalsIgnoreCase("gzip"))
{
response.setEntity(new GzipDecompressingEntity(entity));
}
}
}
return response;
其中,client为一个HttpClient的实力,创建方式如:
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(2);
HttpHost googleResearch = new HttpHost("research.google***m", 80);
HttpHost wikipediaEn = new HttpHost("en.wikipedia.org", 80);
cm.setMaxPerRoute(new HttpRoute(googleResearch), 30);
cm.setMaxPerRoute(new HttpRoute(wikipediaEn), 50);
DefaultHttpClient client = new DefaultHttpClient(cm);
1.随便在一个文件夹包上右击新建TestLink类,勾选main方法程序,并初始化导入包、继承JFrame窗体等。
2.在main方法中,首先实例化TestLink类,以便测试随时使用。
3.在此类的构造方法(没有如何参数)中,初始化Java窗体,设置窗体的各项属性,用户可适当增加其他属性。
4.运行此类,查看基本的Java窗体是否实现。
5.在构造方法中实例化JLabel类,双引号内的文字为窗体上显示的文字,必须被final修饰,然后添加此类的鼠标**事件,最后加上“this.add(mBlogSina);”将标签加入到窗体中。
6.运行程序后,如下图所示,JLabel被加入到窗体中。
7.在鼠标**事件中添加匿名类MouseadAdapter的三个方法。
8.创建如图的URI对象(双引号内为点击链接到的网址),并创建Desktop类,此时发现程序出错,点击“X”添加异常处理并将声明的Desktop类移到声明的uri下方。
9.输入下图if语句执行判断,并输入“dptdtp.browse(uri);”(执行链接操作的方法)时发现重新报错,则执行类似第8步的异常处理。
10.直至此步,运行程序,点击JLabel标签就会自动打开系统默认浏览器转到用户设置的指定网址。
11.下一步在其他两个方法内输入以下语句,实现鼠标移出、移入链接的效果。具体的实现代码,你必须亲自去做。
//添加http头信息
httppost.addHeader("Authorization", "your token"); //认证token
httppost.addHeader("Content-Type", "application/json");
httppost.addHeader("User-Agent", "imgfornote");
文件上传就是将客户端资源,通过网路传递到服务器端。 因为文件数据比较大,必须通过文件上传才可以完成将数据保存到数据库端的操作。 文件上传的本质就是IO流操作。 演示:文件上传应该如何操作? 浏览器端:1.method=post 只有post才可以携带大数据2.必须使用要有name属性3.encType="multipart/form-data"服务器端:request对象是用于获取请求信息。它有一个方法 getInputStream(); 可以获取一个字节输入流,通过这个流,可以读取到所有的请求正文信息.文件上传原理:浏览器端注意上述三件事,在服务器端通过流将数据读取到,在对数据进行解析.将上传文件内容得到,保存在服务器端,就完成了文件上传。 注意:在实际开发中,不需要我们进行数据解析,完成文件上传。因为我们会使用文件上传的工具,它们已经封装好的,提供API,只要调用它们的API就可以完成文件上传操作.我们使用的commons-fileupload,它是apache提供的一套开源免费的文件上传工具。 代码演示文件上传的原理: 在WebRoot下新建upload1.jsp [html] view plain copy My JSP 'index.jsp' starting page <form action="${pageContext.request***ntextPath }/upload1" method="POST" enctype="multipart/form-data"> <input type="submit" value="上传"> 新建Upload1Servlet 路径:/upload1 [java] view plain copy package cn.itcast.web.servlet; import java.io.IOException; import java.io.InputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Upload1Servlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // System.out.println("upload1 servlet......"); // 通过request获取一个字节输入流,将所有的请求正文信息读取到,打印到控制台 InputStream is = request.getInputStream(); byte[] b = new byte[1024]; int len = -1; while ((len = is.read(b)) != -1) { System.out.println(new String(b, 0, len)); } is.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } 在浏览器端访问信息如下: 后台打印正文信息如下: 文件上传概述 实现web开发中的文件上传功能,需要完成如下二步操作: 在web页面中添加上传输入项。 在Servlet中读取上传文件的数据,并保存在服务器硬盘中。 如何在web页面中添加上传输入项? 标签用于在web页面中添加文件上传输入项,设置文件上传输入项时注意: 1、必须设置input输入项的name属性,否则浏览器将不会发送上传文件的数据。 2、必须把form的encType属性设为multipart/form-data 设置该值后,浏览器在上传文件时,并把文件数据附带在http请求消息体内,并使用MIME协议对上传的文件进行描述,以方便接收方对上传数据进行解析和处理。 3、表单的提交方式要设置为post。 如何在Servlet中读取文件上传数据,并保存到本地硬盘中? Request对象提供了一个getInputStream方法,通过这个方法可以读取到客户端提交过来的数据。但由于用户可能会同时上传多个文件,在servlet端编程直接读取上传数据,并分别解析出相应的文件数据是一项非常麻烦的工作,示例。 为方便用户处理文件上传数据,Apache 开源组织提供了一个用来处理表单文件上传的一个开源组件( Commons-fileupload ),该组件性能优异,并且其API使用极其简单,可以让开发人员轻松实现web文件上传功能,因此在web开发中实现文件上传功能,通常使用Commons-fileupload组件实现。 使用Commons-fileupload组件实现文件上传,需要导入该组件相应支撑jar包:Commons-fileupload和commons-io。commo-io不属于文件上传组件的开发jar文件,但Commons-fileupload组件从1.1版本开始,它工作时需要commons-io包的支持。
首先,我们先看一下http的头信息到底是什么:
HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而 言,包括message-header和message-body两部分。首先传递message- header,即http header消息。http header 消息通常被分为4个部分: general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确,根据日常使用,大体分为Request和Response两部分。
在通常的servlet/jsp应用中,我们只是从http的header中取得信息,如果要设置信息,需要用到HttpClient,具体的设置方法如下:
HttpResponse response = null;
HttpGet get = new HttpGet(url);
get.addHeader("Accept", "text/html");
get.addHeader("Accept-Charset", "utf-8");
get.addHeader("Accept-Encoding", "gzip");
get.addHeader("Accept-Language", "en-US,en");
get.addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22");
response = client****cute(get);
HttpEntity entity = response.getEntity();
Header header = entity.getContentEncoding();
if (header != null)
{
HeaderElement[] codecs = header.getElements();
for (int i = 0; i < codecs.length; i++)
{
if (codecs[i].getName().equalsIgnoreCase("gzip"))
{
response.setEntity(new GzipDecompressingEntity(entity));
}
}
}
return response;
其中,client为一个HttpClient的实力,创建方式如:
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(2);
HttpHost googleResearch = new HttpHost("research.google***m", 80);
HttpHost wikipediaEn = new HttpHost("en.wikipedia.org", 80);
cm.setMaxPerRoute(new HttpRoute(googleResearch), 30);
cm.setMaxPerRoute(new HttpRoute(wikipediaEn), 50);
DefaultHttpClient client = new DefaultHttpClient(cm);
亲,你说的啥意思啊?
“怎样才能让这里的名称也可以正常显示? ”??现在有名称不正常么??
你是说保存的文件名?
1)http头当中确实需要指定当前返回的是文件,才能让浏览器按照文件识别,但是你说你写了setheader,就应该知道 默认文件名也是在这里写的,所以你说“不正常”就很难明白了。
2)迅雷的任务栏里有没有同名文件,你是拿不到的,那不是B/S结构能处理的东西。当然你可以写一个插件来处理,不过这东西一点都不简单。举个栗子,如果你的java(也就是服务器)能够知道用户的迅雷里有什么,那么用户那儿还有啥你不知道的,岂不是登录你的网站我下了多少**都被你晓得了?
3)你看到的有些东西是迅雷处理的,建议你把迅雷的插件关闭了,先把其他功能弄完整了再把迅雷加上。
本文由宠物迷 百科常识栏目发布,非常欢迎各位朋友分享到个人朋友圈,但转载请说明文章出处“为什么java需要Http响应头等信息”
上一篇
大局已定|2020年车企销量排名出炉,自主品牌仅占其三
下一篇
word快捷键全选